/***
 * @file Stmt.h
 *
 *
 *  @Author: calle
 *  @date Mar 28, 2011
 */
#ifndef ISTMT_H_
#define ISTMT_H_

class IStmtVisitor;


#include "IStmtVisitable.h"
#include <Interfaces/ICloneable.h>
#include <string>
#include <AbsSyn/AbsSyn.h>

/**
 * \class IStmt IStmt.h <AbsSyn/IStmt.h>
 *
 *  \brief All statement inherits from this class
 *
 *  Its one of the most fundamental classes, it is also an abstract class.
 *
 *
 *
 * \ingroup Interfaces
 * \ingroup AbsSyn
 * \ingroup IStmt
 *
 * \defgroup IStmt Statement classes
 *
 */


class IStmt: public IStmtVisitable,ICloneable {
public:
	virtual std::string cmdString() const=0;
	virtual void accept(IStmtVisitor *v) = 0;
	virtual IStmt* clone()const=0;

};

#endif /* STMT_H_ */
